package com.jeehentor.config.security.handler;

import com.alibaba.fastjson2.JSON;
import com.jeehentor.common.vo.Result;
import com.jeehentor.utils.WebUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

/**
 * @Description : 401配置
 * AuthenticationEntryPoint 接口是 Spring Security 中的一个接口，用于处理在用户尝试访问受保护资源时出现的身份验证异常。
 * 它定义了一个方法 commence，该方法在身份验证失败时被调用，允许应用程序自定义处理方式，例如重定向到登录页面、返回特定的错误响应等。
 * @Author : wzd
 * @Date : 2024/4/9 11:00
 * @Version : 1.0
 **/
@Component
public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) {
        Result<String> result = new Result<>();
        result.setCode(HttpStatus.UNAUTHORIZED.value());
        result.setMessage("token无效");
        WebUtil.renderString(response, JSON.toJSONString(result));
    }
}
